package com.itheima.d1_inner.demo1;

//外部类
public class Outer {
    private int num = 99;
    private static String name = "黑马";

    //内部类
    public class Inner {
        private int num = 88;

        //在JDK16以前，成员内部类不允许有静态成员！但是后面允许了！
        static int age = 18;

        public void show() {
            int num = 77;

            //1.访问内部类的局部变量num
            System.out.println(num);

            //2.访问内部类的成员变量num
            System.out.println(this.num);

            //3.访问外部类的成员变量num
            //System.out.println(super.num);
            //访问格式：外部类名.this.属性名
            System.out.println(Outer.this.num);

            //4.访问外部类的静态变量name
            System.out.println(name);
        }
    }

    public void useInner() {
        //5.这个方法是Outer外部类的实例方法，这个方法一旦被调用，说明外部类对象肯定已存在，此时创建内部类对象格式就可以使用传统格式！
        Inner inner = new Inner();

        //6.外部类要调用内部类的成员，不能直接调，用内部类对象调用
        System.out.println(inner.num);
        inner.show();
    }
}
